/*************************************************************************
	> File Name: AbstractProduct.h
	> Author: Joker
	> Mail: mahongtao@foxmail.com 
	> Created Time: 2020-09-21 18:41:41
 ************************************************************************/

#ifndef __ABSTRACTPRODUCT_H__
#define __ABSTRACTPRODUCT_H__

//抽象基类AbstractProductA，代表产品A的抽象
class AbstractProductA
{
public:
    AbstractProductA(){}
    virtual ~AbstractProductA(){}
};

//派生类ConcreateProductA1,产品A的第一种实现
class ConcreateProductA1
:public AbstractProductA
{
public:
    ConcreateProductA1();
    virtual ~ConcreateProductA1();
};

//派生类ConcreateProductA2,产品A的第二种实现
class ConcreateProductA2
:public AbstractProductA
{
public:
    ConcreateProductA2();
    virtual ~ConcreateProductA2();
};

//抽象基类AbstractProductB,代表产品B的抽象
class AbstractProductB
{
public:
    AbstractProductB(){}
    virtual ~AbstractProductB(){}
};

//派生类ConcreateProductB1,产品B的第一种实现
class ConcreateProductB1
:public AbstractProductB
{
public:
    ConcreateProductB1();
    virtual ~ConcreateProductB1();
};

//派生类ConcreateProductB2,产品B的第二种实现
class ConcreateProductB2
:public AbstractProductB
{
public:
    ConcreateProductB2();
    virtual ~ConcreateProductB2();
};


#endif
